#include "dataprovider.h"

#include <QTimer>
#include <QDateTime>
#include "feactualdataservice.h"

const FeActualDataId FePluginDataProvider::ID_CLOCK = FEACTUALDATA_MAKEID(1,0,0);

FePluginDataProvider::FePluginDataProvider(FeActualDataService *_service, QObject *parent)
: QObject(parent)
{
	Q_ASSERT(_service);
	service = _service;

	timer = new QTimer(this);
	timer->setInterval(500);
	connect(timer, SIGNAL(timeout()), SLOT(sendTimeUpdate()));
}

FePluginDataProvider::~FePluginDataProvider()
{
}

QList<FeActualDataId> FePluginDataProvider::dataList() const
{
	return QList<FeActualDataId>()
		<< ID_CLOCK
		;
}

void FePluginDataProvider::start()
{
	// TODO
}

void FePluginDataProvider::stop()
{
	// TODO
}

void FePluginDataProvider::activateDataPoll(FeActualDataId id)
{
	if(id == ID_CLOCK)
	{
		sendTimeUpdate();
		timer->start();
	}
}

void FePluginDataProvider::deactivateDataPoll(FeActualDataId id)
{
	if(id == ID_CLOCK)
	{
		timer->stop();
	}
}

void FePluginDataProvider::queryDataUpdate(FeActualDataId id)
{
	if(id == ID_CLOCK)
	{
		sendTimeUpdate();
	}
}

void FePluginDataProvider::sendTimeUpdate()
{
	QDateTime dt = QDateTime::currentDateTime();
	service->sendDataChanged(ID_CLOCK, dt);
}